In [1]:
import plotly.graph_objs as go
import plotly.express as px
import pandas as pd

Introduction¶

Sociale media hebben een groot impact op de wereld achtergelaten, sinds het begin van de 21e eeuw is er een nieuwe manier van leven ontstaan: het digitale leven. Mensen van over de hele wereld kunnen nu in real time delen wat zij doen, en hoe hun leven eruitziet. Wat in eerste instantie een hele handige uitvinding bleek te zijn, brengt echter meerdere perspectieven met zich mee. Al snel bleek namelijk dat je niet per se alle kanten van je leven op sociale media hoeft te zetten. Het werd al snel een trend om voornamelijk de beste kanten te laten zien, en de mindere kanten van je leven privé te houden.

In ons onderzoek gaan we kijken naar de impact van deze sociale media op de mentale gezondheid onder jong volwassenen. De illusies die sociale media met zich meebrengt zouden namelijk een negatief zelfbeeld kunnen veroorzaken bij jong volwassenen. Wij waren benieuwd of er een correlatie te vinden viel tussen de mentale gezondheid en de opkomst van sociale media. Ondanks dat we misschien in eerste instantie een negatief beeld schetsen, zou het echter ook zomaar de andere kant op kunnen gaan.

Sociale media creeërde ook kansen op zowel sociaal- als werkgebied, nog nooit eerder konden jongeren zo snel met elkaar communiceren. Het zorgt voor kansen op zowel het gebied van liefde als vriendschap, en bracht een hele hoop nieuwe banen in de markt. Met behulp van slimme algoritmes kun je als creatieveling je werk aan miljoenen mensen laten zien, en dat helemaal gratis. Jong volwassenen kunnen ook veel gemakkelijker mensen vinden die dezelfde interesses delen, en hierdoor juist dat buitengesloten gevoel tegen gaan.

Kortom gezegd, er zijn meerdere perspectieven die in eerste instantie erg logisch lijken te zijn. Hierom zijn wij benieuwd wat de data te zeggen heeft.

Visualisaties¶

Uitleg: Deze dataset (https://longreads.cbs.nl/jeugdmonitor-2022/welzijn-van-jongvolwassenen/) van het CBS (Centraal Bureau van Statistiek) gaat over het welzijn van jongeren, van 1997 tot 2021 is er onderzoek gedaan naar dit welzijn. Jongeren konden eerlijk aangeven of zij gelukkig of tevreden zijn met hun leven. De leeftijdsgroepen zijn opgesplitst in jongeren tussen 18-25, en mensen die boven de 18 zijn (algemene bevolking). De data is zowel in een lijngrafiek als tabelvorm weergegeven, waarbij je ook mogelijk de conclusie kan trekken dat bepaalde evenementen (bijvoorbeeld coronapandemie) een impact op de data hebben gehad.


**Preprocessing:** Om deze dataset te gebruiken hoefde er niet enorm veel aan de dataset aangepast te worden. Het enige wat wel moest veranderen was dat de getallen er eerst als percentages instonden, waardoor python het niet herkende als een integer, maar als een string. Nadat dit was aangepast naar de getallen die equivalent zijn aan die percentages kon de dataset gebruikt worden voor een lijngrafiek die over tijd laat zien hoe de groepen zich voelen.
In [2]:
gl = pd.read_csv('10-Copy1.1.1-geluk-en-tevredenheid.csv')

gl

trace1 = go.Scatter(x = gl['Category'], 
                    y = gl['Tevredenheid, 18 jaar of ouder'], 
                    mode = 'lines + markers', 
                    name = 'Tevredenheid, 18 jaar of ouder', 
                    marker = dict(color = 'lightblue'))
trace2 = go.Scatter(x = gl['Category'], 
                    y = gl['Tevredenheid, 18 tot 25 jaar'], 
                    mode = 'lines + markers', 
                    name = 'Tevredenheid, 18 tot 25 jaar',
                   marker = dict(color = 'blue'))
trace3 = go.Scatter(x = gl['Category'], 
                    y = gl['Geluk, 18 tot 25 jaar'], 
                    mode = 'lines + markers', 
                    name = 'Geluk, 18 tot 25 jaar',
                   marker = dict(color = 'green'))
trace4 = go.Scatter(x = gl['Category'], 
                    y = gl['Geluk, 18 jaar of ouder'], 
                    mode = 'lines + markers', 
                    name = 'Geluk, 18 jaar of ouder',
                   marker = dict(color = 'lightgreen'))

Layout = go.Layout(title = 'Tevredenheid en geluk',
                  xaxis = dict(title = 'Jaren', gridcolor = 'lightgrey'),
                  yaxis = dict(title = 'Percentage mensen dat zich zo voelt', tickformat = ',.0%', range = [0.7, 1], gridcolor = 'lightgrey'),
                   font = dict(family = 'Georgia', color = 'Black'),
                   plot_bgcolor = 'white',
                   paper_bgcolor = 'white',
    )
                  

fig = go.Figure(data = [trace1, trace2, trace4, trace3], layout = Layout)
fig.update_layout(
    xaxis=dict(
        rangeselector=dict(
            buttons=list([
                dict(count=1,
                     label="1y",
                     step="year",
                     stepmode="backward"),
                dict(count=5,
                     label="5y",
                     step="year",
                     stepmode="backward"),
                dict(step="all")
            ])
        ),
        rangeslider=dict(
            visible=True
        ),
        type="date"
    )
)
    
fig.show()

Uitleg: De dataset (https://www.pewresearch.org/internet/fact-sheet/social-media/?tabId=tab-81867c91-92ad-45b8-a964-a2a894f873ef) van pewresearch die voor de visualizatie hieronder is gebruikt, laat per een aantal maanden het percentage van de bevolking van de Verenigde Staten zien die verschillende sociale media hebben gebruikt. Dit wordt aangegeven in percentages.


**Preprocessing:** Voordat de dataset gebruikt kon worden moest er enorm veel worden opgeschoond. Er stond namelijk tekst in de csv file waardoor de file in eerste instantie niet gelezen kon worden en de komma's stonden op de verkeerde plek. Ook stonden er enorm veel nagbs waardes in. Deze moesten aangepast worden naar NaN's zodat deze gebruikt konden worden. Verder moest ook het kolom 'Year' worden aangepast naar een format waardoor ik het naar een daadwerkelijke datum om kon zetten en op die manier makkelijker te gebruiken was voor de x-as.
In [3]:
df = pd.read_csv('test-Copy1.csv')
df[df.columns[1:]] = df[df.columns[1:]].replace('%', '', regex=True).astype(float) / 100
df['Year'] = pd.to_datetime(df['Year'])
df_filtered = df.dropna()
df_filtered = df_filtered.sort_values(by='Year', ascending=False)
df
Out[3]:
Year Facebook Pinterest Instagram LinkedIn Twitter Snapchat YouTube WhatsApp Reddit TikTok Nextdoor
0 2012-08-05 0.54 0.10 0.09 0.16 0.13 NaN NaN NaN NaN NaN NaN
1 2012-08-07 NaN NaN NaN 0.14 NaN NaN NaN NaN NaN NaN NaN
2 2012-12-09 NaN 0.13 0.11 0.13 NaN NaN NaN NaN NaN NaN NaN
3 2012-12-16 0.57 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
4 2013-05-19 NaN NaN NaN 0.15 NaN NaN NaN NaN NaN NaN NaN
5 2013-07-14 NaN NaN NaN 0.16 NaN NaN NaN NaN NaN NaN NaN
6 2013-09-16 0.57 0.17 0.14 0.17 0.14 NaN NaN NaN NaN NaN NaN
7 2013-09-30 NaN NaN NaN 0.16 NaN NaN NaN NaN NaN NaN NaN
8 2014-01-26 NaN NaN NaN 0.16 NaN NaN NaN NaN NaN NaN NaN
9 2014-09-21 0.58 0.22 0.21 0.23 0.19 NaN NaN NaN NaN NaN NaN
10 2015-04-12 0.62 0.26 0.24 0.22 0.20 NaN NaN NaN NaN NaN NaN
11 2016-04-04 0.68 0.26 0.28 0.25 0.21 NaN NaN NaN NaN NaN NaN
12 2018-01-10 0.68 0.29 0.35 0.25 0.24 0.27 0.73 0.22 NaN NaN NaN
13 2019-02-07 0.69 0.28 0.37 0.27 0.22 0.24 0.73 0.20 0.11 NaN NaN
14 2021-02-08 0.69 0.31 0.40 0.28 0.23 0.25 0.81 0.23 0.18 0.21 0.13
In [4]:
trace1 = go.Scatter(x = df['Year'], 
                    y = df['Facebook'], 
                    mode = 'lines + markers', 
                    name = 'Facebook', 
                    marker = dict(color = 'blue'),
                   connectgaps=True)
trace2 = go.Scatter(x = df['Year'], 
                    y = df['Pinterest'], 
                    mode = 'lines + markers', 
                    name = 'Pinterest', 
                    marker = dict(color = '#FF6F6F'),
                   connectgaps=True)
trace3 = go.Scatter(x = df['Year'], 
                    y = df['Instagram'], 
                    mode = 'lines + markers', 
                    name = 'Instagram', 
                    marker = dict(color = 'pink'),
                   connectgaps=True)
trace4 = go.Scatter(x = df['Year'], 
                    y = df['LinkedIn'], 
                    mode = 'lines + markers', 
                    name = 'LinkedIn', 
                    marker = dict(color = 'darkblue'),
                   connectgaps=True)
trace5 = go.Scatter(x = df['Year'], 
                    y = df['Twitter'], 
                    mode = 'lines + markers', 
                    name = 'Twitter', 
                    marker = dict(color = 'lightblue'),
                   connectgaps=True)
trace6 = go.Scatter(x = df['Year'], 
                    y = df['Snapchat'], 
                    mode = 'lines + markers', 
                    name = 'Snapchat', 
                    marker = dict(color = 'yellow'),
                   connectgaps=True)
trace7 = go.Scatter(x = df['Year'], 
                    y = df['YouTube'], 
                    mode = 'lines + markers', 
                    name = 'YouTube', 
                    marker = dict(color = 'red'),
                   connectgaps=True)
trace8 = go.Scatter(x = df['Year'], 
                    y = df['WhatsApp'], 
                    mode = 'lines + markers', 
                    name = 'WhatsApp', 
                    marker = dict(color = 'green'),
                   connectgaps=True)
trace9 = go.Scatter(x = df['Year'], 
                    y = df['Reddit'], 
                    mode = 'lines + markers', 
                    name = 'Reddit', 
                    marker = dict(color = 'orange'),
                   connectgaps=True)
trace10 = go.Scatter(x = df['Year'], 
                    y = df['TikTok'], 
                    mode = 'lines + markers', 
                    name = 'TikTok', 
                    marker = dict(color = 'black'),
                    connectgaps=True)
trace11 = go.Scatter(x = df['Year'], 
                    y = df['Nextdoor'], 
                    mode = 'lines + markers', 
                    name = 'Nextdoor', 
                    marker = dict(color = 'lightgreen'),
                    connectgaps=True)

new_Layout = go.Layout(title = 'Totaal gebruik verschillende sociale media door bevolking Verenigde Staten',
                      xaxis = dict(title = 'Jaartallen', tickmode='linear', dtick = 'M12', gridcolor = 'lightgray'),
                      yaxis = dict(title = 'Percentage gebruik sociale media', tickformat = ',.0%', range = [0, 1], gridcolor = 'lightgray'),
                      font = dict(family = 'Georgia', color = 'Black'),
                      plot_bgcolor = 'white',
                      paper_bgcolor = 'white')
new_fig = go.Figure(data = [trace1, trace2, trace3, trace4, trace5, trace6, trace7, trace8, trace9, trace10, trace11], 
                    layout = new_Layout)
    

new_fig.show()
In [5]:
dc = pd.read_csv('social-Copy1.csv')
dc['Year'] = pd.to_datetime(dc['Year'])
dc
Out[5]:
Year 18-29 30-49 50-64 65+
0 2005-03-21 0.07 0.06 0.04 0.03
1 2005-12-08 0.16 0.09 0.05 0.02
2 2006-08-31 0.41 0.06 0.03 0.00
3 2008-05-11 0.60 0.21 0.07 0.02
4 2008-08-10 0.65 0.27 0.10 0.03
5 2008-08-31 0.68 0.27 0.09 0.02
6 2008-12-04 0.67 0.30 0.12 0.02
7 2008-12-20 0.59 0.28 0.08 0.03
8 2009-04-19 0.70 0.42 0.20 0.05
9 2009-09-14 0.67 0.44 0.21 0.06
10 2009-12-27 0.78 0.47 0.25 0.08
11 2010-01-19 0.76 0.51 0.26 0.07
12 2010-05-30 0.82 0.53 0.37 0.11
13 2010-09-13 0.80 0.52 0.31 0.09
14 2010-11-24 0.74 0.54 0.33 0.11
15 2010-11-28 0.78 0.54 0.33 0.14
16 2010-12-21 0.76 0.55 0.36 0.12
17 2011-05-22 0.79 0.61 0.38 0.14
18 2011-08-26 0.82 0.59 0.36 0.12
19 2012-02-19 0.81 0.64 0.39 0.16
20 2012-08-07 0.88 0.68 0.48 0.22
21 2013-05-19 0.87 0.72 0.50 0.24
22 2013-07-14 0.87 0.72 0.49 0.21
23 2013-09-30 0.89 0.74 0.54 0.27
24 2014-01-26 0.84 0.77 0.52 0.27
25 2015-07-12 0.90 0.77 0.51 0.35
26 2016-11-06 0.86 0.80 0.64 0.34
27 2018-01-10 0.88 0.78 0.64 0.37
28 2019-02-07 0.90 0.82 0.69 0.40
29 2021-02-08 0.84 0.81 0.73 0.45
In [6]:
trace1 = go.Scatter(x = dc['Year'],
                   y = dc['18-29'],
                   name = '18-29',
                   mode = 'lines + markers',
                   marker = dict(color = 'darkblue')
                   )

trace2 = go.Scatter(x = dc['Year'],
                   y = dc['30-49'],
                   name = '30-49',
                   mode = 'lines + markers',
                   marker = dict(color = 'mediumblue')
                   )

trace3 = go.Scatter(x = dc['Year'],
                   y = dc['50-64'],
                   name = '50-64',
                   mode = 'lines + markers',
                   marker = dict(color = 'blue')
                   )

trace4 = go.Scatter(x = dc['Year'],
                   y = dc['65+'],
                   name = '65+',
                   mode = 'lines + markers',
                   marker = dict(color = 'steelblue')
                   )

social_layout = go.Layout(title = 'Sociale media gebruik per leeftijdsgroep in de Verenigde Staten',
                          xaxis = dict(title = 'Jaren', gridcolor = 'lightgray'),
                         yaxis = dict(title = 'Percentage mensen', tickformat = ',.0%', range = [0, 1], gridcolor = 'lightgray'),
                         font = dict(family = 'Georgia', color = 'Black'),
                        plot_bgcolor = 'white',
                       paper_bgcolor = 'white' 
                         )

social_figure = go.Figure(data = [trace1, trace2, trace3, trace4], layout = social_layout)


social_figure.show()
In [7]:
cr = pd.read_csv('correlatie-Copy1.csv')
cr_filtered = cr.dropna()
cr_filtered = cr_filtered.sort_values(by='Category', ascending=False)
cr
Out[7]:
Category Geluk, 18 tot 25 jaar 18-29
0 1997 0.911 NaN
1 1998 0.909 NaN
2 1999 0.898 NaN
3 2000 0.908 NaN
4 2001 0.909 NaN
5 2002 0.887 NaN
6 2003 0.907 NaN
7 2004 0.906 NaN
8 2005 0.876 0.115
9 2006 0.905 0.410
10 2007 0.898 NaN
11 2008 0.914 0.638
12 2009 0.900 0.717
13 2010 0.888 0.777
14 2011 0.894 0.805
15 2012 0.904 0.845
16 2013 0.900 0.877
17 2014 0.896 0.840
18 2015 0.887 0.900
19 2016 0.885 0.860
20 2017 0.875 NaN
21 2018 0.858 0.880
22 2019 0.875 0.900
23 2020 0.838 NaN
24 2021 0.809 0.840
In [8]:
data = [
    go.Bar(x = cr['Category'],
          y = cr['18-29'],
          name = 'Gebruik van sociale media door jongvolwassenen',
          legendgroup = 'Gebruik van sociale media door jongvolwassenen',
          marker = dict(color = '#147db1')
          ),
    go.Bar(x = cr['Category'],
          y = cr['Geluk, 18 tot 25 jaar'],
          name = 'Geluk jongvolwassenen',
          legendgroup = 'Geluk jongvolwassenen',
          marker = dict(color = '#3a4f6d')
          )
]

x_layout = go.Layout(title = 'Geluk vs sociale media gebruik van jongvolwassenen door de jaren heen',
                    xaxis = dict(title = 'Jaren', 
                                gridcolor = 'lightgray'
                                ),
                    yaxis = dict(title = 'Percentage mensen', 
                                 tickformat = ',.0%',
                                range = [0, 1],
                                gridcolor = 'lightgray'),
                    font = dict(family = 'Georgia', 
                                color = 'Black'),
                    plot_bgcolor = 'white',
                    paper_bgcolor = 'white' 
                    )

x_figure = go.Figure(data = data, layout = x_layout)

x_figure.update_layout(
    xaxis=dict(
        rangeselector=dict(
            buttons=list([
                dict(count=1,
                     label="1y",
                     step="year",
                     stepmode="backward"),
                dict(count=5,
                     label="5y",
                     step="year",
                     stepmode="backward"),
                dict(step="all")
            ])
        ),
        rangeslider=dict(
            visible=True
        ),
        type="date"
    )
)
    

x_figure.show()
In [ ]:
 
In [ ]: